package net.maku.events.service;

import net.maku.events.vo.ActivityBaseJoinVO;
import net.maku.framework.common.utils.PageResult;
import net.maku.framework.mybatis.service.BaseService;
import net.maku.events.vo.UserJoinActivityVO;
import net.maku.events.query.UserJoinActivityQuery;
import net.maku.events.entity.UserJoinActivityEntity;

import java.util.Date;
import java.util.List;

/**
 * 用户参与的活动
 *
 * @author 阿沐 babamu@126.com
 * @since 1.0.0 2025-03-22
 */
public interface UserJoinActivityService extends BaseService<UserJoinActivityEntity> {

    /**
     * 查询用户参与的活动
     *
     * @param query 查询条件
     * @return 结果
     */
    PageResult<UserJoinActivityVO> page(UserJoinActivityQuery query);

    /**
     * 校验是否参与
     *
     * @param businessType 活动类型
     * @param businessId   活动id
     * @return
     */
    boolean checkJoin(Integer businessType, Long businessId);

    /**
     * 参与活动
     *
     * @param businessType 活动类型
     * @param businessId   活动id
     */
    void save(Integer businessType, Long businessId, String activityTitle, String thumbnail, Date startTime, Date endTime);

    /**
     * 查询用户参与活动id数组
     *
     * @param businessType        活动类型
     * @param activityBaseJoinVOS 参与活动基类
     * @return 结果
     */
    void getJoinActivityIdList(Integer businessType, List<? extends ActivityBaseJoinVO> activityBaseJoinVOS);

}